C11 এবং C17 এর নতুন ফিচার

Computer Programming - সি স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স (C Standard Library Reference) C Standard Library এর ভবিষ্যৎ (Future of C Standard Library) |
230
230

C11 এবং C17 এর নতুন ফিচার

C11 এবং C17 হলো ANSI C বা Standard C এর নতুন সংস্করণ, যা ISO (International Organization for Standardization) দ্বারা প্রকাশিত হয়েছে। C11 সংস্করণটি ২০১১ সালে এবং C17 সংস্করণটি ২০১৭ সালে প্রকাশিত হয়েছে। C11 সংস্করণে বেশ কিছু নতুন বৈশিষ্ট্য যোগ করা হয়েছে এবং C17 সংস্করণে মূলত C11-এর বাগ ফিক্স করা হয়েছে।


C11 এর নতুন বৈশিষ্ট্য

C11 সংস্করণে কিছু গুরুত্বপূর্ণ নতুন বৈশিষ্ট্য যোগ করা হয়েছে, যা কোডিংকে আরও কার্যকর এবং নির্ভুল করেছে।

১. Atomics (Atomic Operations)

Atomics যোগ করার মাধ্যমে মাল্টিথ্রেডেড প্রোগ্রামিংয়ে নির্দিষ্ট ডেটার অ্যাক্সেসকে নিরাপদ করা হয়েছে। Atomics ব্যবহার করে কোনো ভেরিয়েবলে একাধিক থ্রেড একসাথে অ্যাক্সেস করতে পারে না, ফলে ডেটা রেস এড়ানো সম্ভব হয়।

উদাহরণ:

#include <stdatomic.h>

int main() {
    atomic_int count = 0;  // অ্যাটমিক ভেরিয়েবল ঘোষণা
    atomic_fetch_add(&count, 1);  // নিরাপদভাবে ভেরিয়েবল পরিবর্তন
    return 0;
}

২. Threads (Multithreading Support)

C11 সংস্করণে threads.h হেডার ফাইলের মাধ্যমে থ্রেড ব্যবস্থাপনা সমর্থন করেছে। এটি থ্রেড তৈরি, থ্রেডের সাথে যোগাযোগ এবং থ্রেডের কার্যক্রম সমাপ্তি সহজ করে।

উদাহরণ:

#include <threads.h>
#include <stdio.h>

int my_thread(void *arg) {
    printf("Hello from thread!\n");
    return 0;
}

int main() {
    thrd_t t;
    thrd_create(&t, my_thread, NULL);  // থ্রেড তৈরি করা
    thrd_join(t, NULL);  // থ্রেড সমাপ্তি পর্যন্ত অপেক্ষা করা
    return 0;
}

৩. Generic Selections (_Generic)

C11-এ _Generic কিওয়ার্ড যোগ করা হয়েছে, যা টাইপের উপর ভিত্তি করে ফাংশন বা এক্সপ্রেশন নির্বাচন করতে সাহায্য করে। এটি কোডকে আরও গতিশীল করে তোলে এবং টাইপ চেকিং সহজ করে।

উদাহরণ:

#include <stdio.h>

#define print_val(x) _Generic((x), \
    int: print_int, \
    double: print_double \
)(x)

void print_int(int i) {
    printf("Integer: %d\n", i);
}

void print_double(double d) {
    printf("Double: %f\n", d);
}

int main() {
    print_val(5);       // Integer ফাংশন কল করবে
    print_val(5.5);     // Double ফাংশন কল করবে
    return 0;
}

৪. Static Assertions (static_assert)

static_assert একটি কম্পাইল টাইম এসারশন তৈরি করতে ব্যবহৃত হয়। এটি প্রোগ্রামে নির্দিষ্ট কন্ডিশন মেনে চলা নিশ্চিত করতে ব্যবহৃত হয়, যা কম্পাইল টাইমে ত্রুটি চিহ্নিত করে।

উদাহরণ:

#include <assert.h>

int main() {
    static_assert(sizeof(int) == 4, "int size is not 4 bytes");
    return 0;
}

৫. Anonymous Structures and Unions

C11 এ Anonymous Structures এবং Unions যোগ করা হয়েছে, যা ডেটা স্ট্রাকচার ডিজাইনকে আরও সহজ করে।

উদাহরণ:

#include <stdio.h>

struct Point {
    union {
        struct {
            int x, y;
        };
        int coords[2];
    };
};

int main() {
    struct Point p = {.x = 5, .y = 10};
    printf("X: %d, Y: %d\n", p.x, p.y);
    return 0;
}

৬. Improved Unicode Support

C11-এ _Char16_t, _Char32_t এবং _Unicode সাপোর্ট যোগ করা হয়েছে, যা ইউনিকোড ডেটা পরিচালনাকে আরও সহজ করেছে।


C17 এর নতুন বৈশিষ্ট্য

C17 সংস্করণটি নতুন কোনো উল্লেখযোগ্য বৈশিষ্ট্য যোগ করেনি; এটি মূলত C11 সংস্করণের বাগ ফিক্স এবং কিছু উন্নতি প্রদান করেছে। কিছু ক্ষেত্রে C11-এর নতুন বৈশিষ্ট্যগুলির স্থিতিশীলতা উন্নত করেছে।

C17 এর প্রধান পরিবর্তনসমূহ:

১. বাগ ফিক্স: C11 সংস্করণের বিভিন্ন বাগ সংশোধন করা হয়েছে, যা নির্ভরযোগ্যতা এবং স্থিতিশীলতা উন্নত করেছে।
২. ISO মান অনুযায়ী সংশোধন: ISO C স্ট্যান্ডার্ডের সাথে সঙ্গতিপূর্ণ করার জন্য কিছু পরিবর্তন আনা হয়েছে।
৩. অপ্রয়োজনীয় বৈশিষ্ট্য সরানো: কিছু অপ্রয়োজনীয় বৈশিষ্ট্য এবং মাইনার আপডেট সরানো হয়েছে।
৪. উন্নত কম্পাইলার সমর্থন: C17 সংস্করণে বিভিন্ন কম্পাইলারের জন্য আরও ভালো সমর্থন যোগ করা হয়েছে।


C11 এবং C17-এর সুবিধা

১. মাল্টিথ্রেডিং সমর্থন: C11 থ্রেড এবং অ্যাটমিক অপারেশনের জন্য সমর্থন যোগ করেছে, যা মাল্টিপ্রসেসর সিস্টেমে প্রোগ্রামিংকে সহজ এবং কার্যকর করেছে।
২. টাইপ-সেফ প্রোগ্রামিং: _Generic এবং static_assert এর মাধ্যমে টাইপ-সেফ প্রোগ্রামিং আরও নির্ভুল এবং নির্ভরযোগ্য হয়েছে।
৩. Unicode এবং আন্তর্জাতিককরণ: ইউনিকোড সাপোর্টের মাধ্যমে বিভিন্ন ভাষায় প্রোগ্রামিং করা সহজ হয়েছে।
৪. নির্ভরযোগ্য প্রোগ্রামিং: C17 সংস্করণের বাগ ফিক্স এবং উন্নতির মাধ্যমে প্রোগ্রামিং আরও নির্ভরযোগ্য হয়েছে।


সারসংক্ষেপ

বৈশিষ্ট্যC11C17
Atomicsনতুনভাবে যোগ করা হয়েছেবাগ ফিক্স
Threadsthreads.h এ থ্রেড সাপোর্টস্থিতিশীলতা উন্নত
Generic Selections_Generic যোগপূর্বের ফিচারগুলো উন্নত
Static Assertionsstatic_assert যোগ
Anonymous Structuresঅনুমোদিত
Unicode Supportউন্নত ইউনিকোড সাপোর্ট

C11 এবং C17 সংস্করণগুলো C প্রোগ্রামিংয়ের কার্যকারিতা ও স্থিতিশীলতা আরও উন্নত করেছে। C11 মূলত নতুন বৈশিষ্ট্য যোগ করেছিল এবং C17 C11-এর বাগ ফিক্স ও স্থিতিশীলতার উন্নতি করেছে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion